'use strict'
export function username(str) {
    const valid_map = ['admin', 'editor']
    return valid_map.indexOf(str.trim()) >= 0
}

/* 合法uri*/
export function url(textval) {
    const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
    return urlregex.test(textval)
}

/* 小写字母*/
export function lowercase(str) {
    const reg = /^[a-z]+$/
    return reg.test(str)
}

/* 大写字母*/
export function uppercase(str) {
    const reg = /^[A-Z]+$/
    return reg.test(str)
}

/* 大小写字母*/
export function alphabets(str) {
    const reg = /^[A-Za-z]+$/
    return reg.test(str)
}

/**
 * validate email
 * @param email
 * @returns {boolean}
 */
export function email(rule, value, callback) {
    const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
    if (!value) {
        callback();
    } else if (!re.test(value)) {
        callback(new Error('请输入正确的邮箱地址'))
    } else {
        callback()
    }
}

/* 数字校验*/
export function number(rule, value, callback) {
    const re = /^[0-9]*$/
    if (!value) {
        callback()
    } else if (!re.test(value)) {
        callback(new Error('请输入数字'))
    } else {
        callback()
    }
}

//1-10之间的数字校验
export function number1(rule, value, callback) {
    const re = /^([0-9]|10)$/;
    if (!value) {
        callback();
    } else if (!re.test(value)) {
        callback(new Error('请输入1到10的数字'));
    } else {
        callback();
    }
}

/**
 * validate input telephone
 * @returns {msg}
 */
export function telephone(rule, value, callback) {
    let msg = '';
    const re1 = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/; //带区号的固定电话
    const re2 = /^(\d{7,8})(-(\d{3,}))?$/; //不带区号的固定电话
    if (!value) {
        callback();
    } else if (!re1.test(value) && !re2.test(value)) {
        callback(new Error('请输入正确的电话号码'))
    } else {
        callback()
    }
}

/**
 * validate input mobile
 * @returns {msg}
 */
export function mobile(rule, value, callback) {
    let msg = '';
    const re = /^[1][3,4,5,7,8][0-9]{9}$/;
    if (!value) {
        callback();
    } else if (!re.test(value)) {
        callback(new Error('请输入正确的11位手机号码'))
    } else {
        callback()
    }
}